/*
 * LZSS.h
 *
 *  Created on: 05/06/2014
 *      Author: ruben
 */

#ifndef LZSS_H_
#define LZSS_H_
#include <string.h>
#include <iostream>
#include <fstream>
#include "VentanaBusqueda.h"
//#include "ColaCircular.h"
#include "VentanaPreanalisis.h"
#include <math.h>
/*tamVentanaBusqueda y tamVentanaPreanalisis  tienen que ser numeros potencias de 2*/
#define tamVentanaBusqueda 2048 //11 bits para la posicion
const int nbitsPos =log2(tamVentanaBusqueda);
const int nbitsLong = 5;
#define tamVentanaPreanalisis pow(2,5)+2 // (pow(2,5)-1+3)  no contamos l0,l1,l2
using namespace std;
class LZSS {
public:
	LZSS();
	virtual ~LZSS();
	void comprimir(char *file_in);
//	void comprimir(char *file_in,char *file_matchs,char *file_chars,char *file_flags);
	void descomprimir(char *file_in,char *file_chars,char *file_flags);
/*	void escribir();
	void AgregarPalabra(char* palabra);
	Match* BuscarMatch(char *palabra);*/

private:
	VentanaBusqueda *ventanaB;
	VentanaPreanalisis *ventanaP;
	unsigned int getRelleno(unsigned);
};

#endif /* LZSS_H_ */
